﻿// -----------------------------------------------------------------------
// <copyright file="IConfigurationManager.cs" company="CompDJ">
//     Copyright (c) CompDJ. All rights reserved.
// </copyright>
// -----------------------------------------------------------------------
namespace CompDJ.Web.Abstractions
{
    using System.Collections.Specialized;
    using System.Configuration;

    /// <summary>Configuration manager interface</summary>
    public interface IConfigurationManager
    {
        NameValueCollection AppSettings { get; }

        ConnectionStringSettingsCollection ConnectionStrings { get; }

        object GetSection(string sectionName);

        Configuration OpenExeConfiguration(ConfigurationUserLevel userLevel);

        Configuration OpenExeConfiguration(string exePath);

        Configuration OpenMachineConfiguration();

        Configuration OpenMappedExeConfiguration(ExeConfigurationFileMap fileMap, ConfigurationUserLevel userLevel);

        Configuration OpenMappedMachineConfiguration(ConfigurationFileMap fileMap);

        void RefreshSection(string sectionName);
    }
}
